In video coding standards such as H.263, H.264, and HEVC (High Efficiency Video Coding) video frames can be divided into partitions which can be encoded or decoded in separate processing units (e.g. processor cores). This improves parallelism and error resilience.
In one way, increased parallelism is beneficial since the total duration for encoding or decoding a frame is reduced. However, increased parallelism is also disadvantageous. In encoding, the use of more separate regions reduces coding efficiency since similarities between regions can be utilized to a lower degree. In decoding (and to some degree also in encoding), using more processing units increases power usage, which can be particularly problematic for mobile devices where increased power usage implies shorter battery life.
In WO 2012/095801 it is disclosed that in video encoding it is common to encode the image data to remove redundancies in the information to be transmitted. While the pixel data is usually arranged in pixel blocks, the blocks can be arranged in one or more groups of N×M blocks called tiles. The tiles avoid the need to send header information on a tile-by-tile or block-by-block basis, and simplifies parallel processing of the tiles. Bits from respective tiles may then be reformatted to recreate bits according to a raster-scan direction. This enables the decoder to receive the bits in a regular raster-scan format, but also have the ability to decode the tiles once the bits are reformatted. By partitioning an image into tiles of size N×M, it is possible to further exploit the intra-frame correspondence of images in a vertical direction as well as horizontal direction since the tiles need not destroy as many dependencies between blocks in a tile as if the blocks were organized in slices or slice groups. In encoding, the arrangement of tiles is disclosed to correspond to the number of available cores. However, such an arrangement may not be optimal since this can reduce encoding efficiency on the encoder side and power efficiency on the decoder side.